#ifndef _AMI_DELEGATES_H_
#define _AMI_DELEGATES_H_

#include "Ice/Exception.h"
#include "IceUtil/Shared.h"
#include "LuaHandler.h"

#define AMI_SUFFIX       0
#define AMI_TEMPLATE
#define AMI_TEMPLATE_PARAMS
#define AMI_TEMPLATE_ARGS
#define AMI_PARAMS
#define AMI_ARGS
#define AMI_TEMPLATE

#include "AMI_DelegatesImp.h"

#define AMI_SUFFIX       1
#define AMI_TEMPLATE_PARAMS  <typename TP1>
#define AMI_TEMPLATE_ARGS    <TP1>
#define AMI_TEMPLATE_TYPES	TP1
#define AMI_PARAMS       TP1 p1
#define AMI_ARGS         p1
#define AMI_TEMPLATE	template

#include "AMI_DelegatesImp.h"

#define AMI_SUFFIX       2
#define AMI_TEMPLATE_PARAMS  <typename TP1,typename TP2>
#define AMI_TEMPLATE_ARGS    <TP1, TP2>
#define AMI_TEMPLATE_TYPES   TP1, TP2
#define AMI_PARAMS       TP1 p1, TP2 p2
#define AMI_ARGS         p1, p2
#define AMI_TEMPLATE	template

#include "AMI_DelegatesImp.h"

#define AMI_SUFFIX       3
#define AMI_TEMPLATE_PARAMS  <typename TP1,typename TP2,typename TP3>
#define AMI_TEMPLATE_ARGS    <TP1, TP2, TP3>
#define AMI_TEMPLATE_TYPES   TP1, TP2, TP3
#define AMI_PARAMS       TP1 p1, TP2 p2, TP3 p3
#define AMI_ARGS         p1, p2, p3
#define AMI_TEMPLATE	template

#include "AMI_DelegatesImp.h"

#define AMI_SUFFIX       4
#define AMI_TEMPLATE_PARAMS  <typename TP1,typename TP2,typename TP3, typename TP4>
#define AMI_TEMPLATE_ARGS    <TP1, TP2, TP3, TP4>
#define AMI_TEMPLATE_TYPES   TP1, TP2, TP3, TP4
#define AMI_PARAMS       TP1 p1, TP2 p2, TP3 p3, TP4 p4
#define AMI_ARGS         p1, p2, p3, p4
#define AMI_TEMPLATE	template

#include "AMI_DelegatesImp.h"

#define AMI_SUFFIX       5
#define AMI_TEMPLATE_PARAMS  <typename TP1,typename TP2,typename TP3, typename TP4, typename TP5>
#define AMI_TEMPLATE_ARGS    <TP1, TP2, TP3, TP4, TP5>
#define AMI_TEMPLATE_TYPES   TP1, TP2, TP3, TP4, TP5
#define AMI_PARAMS       TP1 p1, TP2 p2, TP3 p3, TP4 p4, TP5 p5
#define AMI_ARGS         p1, p2, p3, p4, p5
#define AMI_TEMPLATE	template

#include "AMI_DelegatesImp.h"

typedef AMI_Delegate1<const std::string&> Delegate_string;

#endif //_AMI_DELEGATES_H_